package com.young.jpademo2.dao;

import com.young.jpademo2.entity.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface AdminRepository extends JpaRepository<Admin,Integer> {
    /*
     * Modify之删除
     * */
    @Modifying
    @Query("delete from Admin where id=?1")
    void deleteAdmin(int id);
    /*
    * Modify之更新
    * */
    @Modifying//修改查询，标记为更新
    @Query(value="update tb_admin set username=?1 where id=?2",nativeQuery=true)
    void updateAdmin(String username,int id);
    /*
     * 根据名称和地址中的关键字进行模糊查询，使用@Param注解
     * */
    @Query("from Admin where userName like %:username% and address like %:address% ")
    List<Admin> findByparam(@Param("username") String username, @Param("address") String address);
    /*
    * 根据名称精确查询
    * */
    List<Admin> findAdminByUsername(String username);

    /*
    * 根据名称中的关键字进行模糊查询
    * */
    @Query("from Admin where userName like %?1%")
    List<Admin> findAdminByName(String username);
    /*
    * 根据名称和地址中的关键字进行模糊查询
    * */
    @Query("from Admin where userName like %?1% and address like %?2% ")
    List<Admin> findBynameAndAddress(String username,String address);

    /*
     * 根据名称和地址中的关键字进行模糊查询，使用原生的SQl语句
     * */
    @Query(value="select * from tb_admin where username like %?1% and address like %?2% ",nativeQuery=true)
    List<Admin> findBynameAndAddress1(String username,String address);


}
